package rabbit.one;

import com.rabbitmq.client.Channel;
import com.rabbitmq.client.Connection;
import com.rabbitmq.client.ConnectionFactory;

import java.io.IOException;
import java.util.concurrent.TimeoutException;

/**
 * Created with IntelliJ IDEA.
 * ClassName: Product
 * Package: rabbit.one
 * Description:
 * User: fzykd
 *
 * @Author: LQH
 * Date: 2023-10-25
 * Time: 14:27
 */

//生成者

public class Product {
    //发消息 发给一个队列
    public static final String QUEUE_NAME = "hello";
    //发消息 main函数发消息
    public static void main(String[] args) throws IOException, TimeoutException {
        //创建一个连接工厂
        ConnectionFactory factory = new ConnectionFactory();
        //工厂IP连接RabbitMQ的队列
        factory.setHost("hadoop100");
        //设置用户名 密码
        factory.setUsername("admin");
        factory.setPassword("123");
        //就可以连接上工厂 后面连接信息
        //创建连接 根据连接获取信道
        Connection connection = factory.newConnection();
        //获取信道
        Channel channel = connection.createChannel();
        //通过信道 连接交换机 连接队列 （简单连接 直接连接队列）
        //生成队列
        /**
         * 申明一个队列用到的参数
         * 1.队列的名称
         * 2.队列里面的消息是否持久化（磁盘） 默认情况下消息存储在内存中
         * 3.该队列是否只提供了一个消费者进行消费 是否进行消费信息共享，true表示可以多个消费者消费 false表示只能有一个消费者消费
         * 4.是否自动删除 最后一个消费者断开连接以后 队列是否自动删除 true表示自动删除 false表示不是
         * 5.其他参数
         */
        channel.queueDeclare(QUEUE_NAME,false,false,false,null);
        //发消息
        String message = "hello word";
        //信道进行消息的发送
        /**
         * 1.发送到那个交换机
         * 2.路由key 是哪个 本次队列的名称
         * 3.其他参数
         * 4.发送消息的消息体 发送二进制
         */
        channel.basicPublish("",QUEUE_NAME,null,message.getBytes());
        System.out.println("消息发送完毕");
    }

}
